空间计算 Sample详情

最后更新时间:2020年12月11日

移动端支持对几何要素的空间计算功能,包括距离长度、面积、角度等计算,如提供计算两点距离、计算直线角度、计算两线交点等接口。

提供几何空间要素间的距离计算、交点计算、周长面积计算等功能。

接口 说明
GeometryOperator.calculateDistance() 计算两点距离
GeometryOperator.calculateDistanceDotToLine() 计算点到折线的距离
GeometryOperator.calculateIntersectionLineLine() 计算折线与折线交点
GeometryOperator.calculateLineLength() 计算折线长度
GeometryOperator.calculatePolygonPerimeter() 计算区周长
GeometryOperator.calculateArea() 计算区面积

说明:另外,com.zondy.mapgis.spatial.SpaCalculator类也提供一些空间计算方法,为上层应用服务。例如,计算两点具体的方法:SpaCalculator.distance()。

接口 说明
Angle.calculateAzimuth() 计算方位角
Angle.calculateSlopeAngle() 计算坡度角
Angle.calculateVectorAngle() 计算向量夹角
Angle.calculateVectorRotateAngle() 计算向量旋转角

具体实现方法如下:

1 两点距离

计算两个Dot点之间的距离。

    //计算两点距离
    double distance = GeometryOperator.calculateDistance(dot1, dot2);
    double distance = SpaCalculator.distance(dot1, dot2);

两点距离.png

2 直线角度

计算线段的角度。

    //获取线的坐标点
    Dot[] line = graphicPolylinA.getPoints();
    //计算线段的角度
    double angleValue = Angle.calculateAzimuth(line[0], line[1]);
    String angle = String.format("%.4f", angleValue);//保留四位小数

    //显示计算结果
    currentResult = "该直线角度为:" + angle + "度";

直线角度.png

3 两线交点

计算两条线的所有交点。

    //取两条线的点序列
    Dot[] line1 = graphicPolylinA.getPoints();
    Dot[] line2 = graphicPolylinB.getPoints();

    GeoVarLine geoVarLineA = new GeoVarLine();
    GeoVarLine geoVarLineB = new GeoVarLine();

    for (int i = 0; i < line1.length; i++) {
        geoVarLineA.append2D(line1[i]);
    }

    for (int i = 0; i < (line2.length); i++) {
        geoVarLineB.append2D(line2[i]);
    }

    //计算两条线的交点
    ArrayList crossDots = new ArrayList();
    GeometryOperator.calculateIntersectionLineLine(geoVarLineA, geoVarLineB, mTolerance, crossDots, null);

两线交点.png